// 1. 普通函数
                                //约束函数返回值的类型
function demo(a:number,b:number):number{
    return a+b;
}

console.log(demo(1,2));


// 2. 箭头函数
let demo1 = (a:string,b:string):string=>{
    return a+b;
}

console.log(demo1("abc","def"));

// 3. 匿名函数
let demo2 = function(a:number,b:number):void{
    console.log(a+b);
}

demo2(123,456);

// 4. 为变量 约束 函数类型
let demo3:(a:number,b:number) => number;

demo3 = (x:number,y:number) =>{
    return x+y;
};

console.log(demo3(1,2)) ;

// 5. 简写形式
let demo4:(a:string,b:string) => string = (x:string,y:string) => x+y;
console.log(demo4("abc","edf"));


// 6. 函数的可选参数   ?  可选

// 封装一个 截取字符串的方法
function slice(str:string,start:number,end?:number):string{
    return str.slice(start,end);
}

console.log(slice("我在学习ts",0,2));
console.log(slice("我在学习ts",1));

// 7. 默认参数

function phone(code:string,area:string="+86"):string{
    return area + code;

}

console.log(phone('18622222222'));
console.log(phone('18622222222',"+110"));






















// 解决命名冲突
export {};